#include "CustomImageItem.h"
#include <QGraphicsSceneHoverEvent>

CustomImageItem::CustomImageItem(QWidget *parent)
    : QGraphicsPixmapItem(nullptr)
{

}


// QPointF mousePosition = event->pos();：
//获取鼠标悬停事件中鼠标的位置，返回一个QPointF对象表示鼠标在场景中的位置。

// int R, G, B;：定义整型变量R、G、B用于存储像素颜色的红、绿、蓝分量。

// int x, y;：定义整型变量x和y用于存储鼠标位置的坐标。

// x = mousePosition.x();：将鼠标位置的x坐标赋值给变量x。

// y = mousePosition.y();：将鼠标位置的y坐标赋值给变量y。

// if (mousePosition.x() < 0)：如果鼠标位置的x坐标小于0，即鼠标超出了图形项的左边界。

//     x = 0;：将变量x的值设置为0，以限制x坐标的范围在图形项内。
// if (mousePosition.y() < 0)：如果鼠标位置的y坐标小于0，即鼠标超出了图形项的上边界。

//     y = 0;：将变量y的值设置为0，以限制y坐标的范围在图形项内。

// pixmap().toImage().pixelColor(x, y).getRgb(&R, &G, &B);
//通过调用pixmap()函数获取图形项的像素图像，然后使用toImage()将其转换为QImage对象，
//再通过pixelColor()函数获取指定位置(x, y)的像素颜色，并使用getRgb()函数将颜色分量值存储到变量R、G、B中。

// QString InfoVal = QString(" W:%1,H:%2 | X:%3,Y:%4 | R:%5,G:%6,B:%7") .arg(QString::number(w)) .arg(QString::number(h)) .arg(QString::number(x)) .arg(QString::number(y)) .arg(QString::number(R)) .arg(QString::number(G)) .arg(QString::number(B));：利用QString的格式化函数arg()，构建包含图形项宽度、高度、鼠标位置、像素颜色信息的字符串InfoVal。

// emit RGBValue(InfoVal);：通过发射信号RGBValue，将颜色信息InfoVal传递给其他部分进行处理。

// 总结起来，该函数在鼠标悬停在图形项上时，获取当前鼠标位置处的像素颜色信息，并通过信号发射将颜色信息传递给其他部分进行处理

void CustomImageItem::hoverMoveEvent(QGraphicsSceneHoverEvent* event)
{
    QPointF mousePosition = event->pos();
    int R, G, B;
    int x, y;
    x = mousePosition.x();
    y = mousePosition.y();
    if (mousePosition.x() < 0)
    {
        x = 0;
    }
    if (mousePosition.y() < 0)
    {
        y = 0;
    }
    pixmap().toImage().pixelColor(x, y).getRgb(&R, &G, &B);
    QString InfoVal = QString(" W:%1,H:%2 | X:%3,Y:%4 | R:%5,G:%6,B:%7")
        .arg(QString::number(w))
        .arg(QString::number(h))
        .arg(QString::number(x))
        .arg(QString::number(y))
        .arg(QString::number(R))
        .arg(QString::number(G))
        .arg(QString::number(B));
    emit RGBValue(InfoVal);
}

